home *** CD-ROM | disk | FTP | other *** search
/ MacHack 1997 / MacHack 1997.toast / Presentations / Presentations ’97 / Sessions ’97 / Multiplatform Code⁄Data Sharing / HelloBothWorlds / GE / LibHdr / preload.h < prev    next >
Encoding:
C/C++ Source or Header  |  1997-06-22  |  4.9 KB  |  218 lines  |  [TEXT/CWIE]

  1. /*
  2.     Preload.h
  3.  
  4.     Graphic Elements cross-platform compatibility headers.
  5.     
  6.     11/28/95
  7.  
  8. */
  9.  
  10. #ifndef PRELOAD
  11. #define PRELOAD
  12.  
  13. //----------------------------------------------------------------------------------
  14. // Figure out what kind of compiler we're using and what system we're compiling for
  15. //----------------------------------------------------------------------------------
  16.  
  17.  
  18. // Add in support for various PC compilers here
  19.  
  20.  
  21. #if defined(_MSC_VER) || defined(_INTEL_)
  22. #define WINDOWS_COMPILER
  23. #define _NO_UNUSED
  24. #endif
  25.  
  26. /*************************************************************************
  27. *
  28. *  To support platform independence, TEST_WIN and TEST_MAC may be 
  29. *  defined on the compiler command line.  This chart shows the various
  30. *  possible combinations:
  31. *
  32. *  Compiled on:   Command line define:   Operation:
  33. *    MAC               <none>             Real build for MAC
  34. *    MAC               TEST_MAC           Syntax-checks MAC build
  35. *    MAC               TEST_WIN           Syntax-checks WIN95 build
  36. *    PC                <none>             Real build for WIN95
  37. *    PC                TEST_MAC           Syntax-checks MAC build
  38. *    PC                TEST_WIN           Syntax-checks WIN95 build
  39. *
  40. *  Note than when performing a syntax-check build, the compiler should
  41. *  be set up so that it does NOT include any precompiled headers of any
  42. *  type.  These builds are to help us make sure that we have not done
  43. *  anything stupid we didn't mean to, so we have a better chance of the
  44. *  program compiling on the other machine.
  45. **************************************************************************/
  46.  
  47. // Set up initial test and compiler defines
  48.  
  49. #if defined(TEST_WIN) && defined(TEST_MAC)
  50. #error  "TEST_WIN overridden by TEST_MAC"
  51. #endif
  52.  
  53. #if defined(TEST_WIN) || defined(TEST_MAC)
  54. #define TEST_COMPILE
  55. #endif
  56.  
  57. #if defined(TEST_WIN) && !defined(TEST_MAC) && !defined(TARGET_IS_WIN95)
  58. #define TARGET_IS_WIN95
  59. #endif
  60.  
  61. // When all is said and done, if it is not a PC, it must be a MAC
  62.  
  63. #ifdef WINDOWS_COMPILER 
  64. #ifndef TEST_COMPILE 
  65. #if !defined(TARGET_IS_WIN95)
  66. #define TARGET_IS_WIN95
  67. #endif
  68. #endif
  69. #else
  70. #define MAC_COMPILER
  71. #endif
  72.  
  73. #ifndef TARGET_IS_WIN95
  74. #ifdef __BEOS__
  75. #define TARGET_IS_BEOS
  76. #else
  77. #ifndef TARGET_IS_MACOS
  78. #define TARGET_IS_MACOS
  79. #endif
  80. #endif
  81. #endif
  82.  
  83.  
  84. //----------------------------------------------------------------------------------
  85. // Now we know what kind of compiler we're using and what system we're compiling for
  86. //----------------------------------------------------------------------------------
  87.  
  88. // These macros compensate for Mac/PC compiler differences in the declaration of "pascal" functions
  89.  
  90. #ifdef WINDOWS_COMPILER
  91. #define GE_CALLBACK(pType, pName)             pType  FAR PASCAL   pName
  92. #define GE_CALLBACK_TDEF(pType, pName) typedef pType (FAR PASCAL * pName)
  93. #else
  94. #ifdef TARGET_IS_BEOS
  95. #define GE_CALLBACK(pType, pName)                pType pName
  96. #define GE_CALLBACK_TDEF(pType, pName)            typedef pType (* pName)
  97. #else
  98. #define GE_CALLBACK(pType, pName)             pascal pType    pName
  99. #define GE_CALLBACK_TDEF(pType, pName) typedef pascal pType (* pName)
  100. #endif
  101. #endif
  102.  
  103. // Mac-specific issues
  104. #if defined(TARGET_IS_MACOS)
  105.  
  106. //Are we using the new headers?
  107. #if defined(__CONDITIONALMACROS__)
  108. #define NEWHEADERS 1
  109. #else
  110. #define NEWHEADERS 0
  111. #endif
  112.  
  113. //Is this for the PowerMac?
  114. #if (defined(powerc) || defined(__powerc))
  115. #define FORPPC 1
  116. #else
  117. #define FORPPC 0
  118. #endif
  119.  
  120.  
  121. //Get Toolbox symbols if we're compiling in MPW
  122.  
  123. #if !defined(TEST_COMPILE) && defined(applec) && !defined(__cplusplus)
  124. #pragma load "::ToolKit.precompile"
  125. #endif
  126.  
  127. #if !defined(TEST_COMPILE)
  128. #include <timer.h>
  129. #ifndef _QDOFFSCREEN__
  130. #include <QDOffscreen.h>
  131. #endif
  132. #endif
  133.  
  134. #define FastCopyBits QuickCopyBits
  135.  
  136. #endif    //TARGET_IS_MACOS
  137.  
  138. // Windows-specific issues
  139. #if defined(TARGET_IS_WIN95)
  140.  
  141. // Set to 1 to use DirectDraw version
  142. #define USING_DIRECTDRAW 0
  143.  
  144. #if !defined(TEST_COMPILE)
  145.  
  146. #include <windows.h>
  147.  
  148. #if USING_DIRECTDRAW
  149. #define CINTERFACE
  150. #include <ddraw.h>
  151. #undef CINTERFACE
  152. #endif
  153.  
  154. // QuickDraw analogs for Win95
  155. #include "GEQDraw.h"
  156.  
  157.  
  158. typedef BOOL Boolean;
  159. #ifndef false
  160.     #define false    0
  161. #endif
  162. #ifndef true
  163.     #define true     1
  164. #endif
  165.  
  166. #if false != 0
  167.     #error "false must be 0"
  168. #endif
  169. #if true != 1
  170.     #error "true must be 1"
  171. #endif
  172.  
  173. typedef unsigned char FAR * Ptr;
  174. typedef Ptr * Handle;
  175.  
  176. typedef char FAR * StringPtr;
  177. typedef char Str255 [256];
  178.  
  179. #ifndef nil
  180.     #define nil 0
  181. #endif
  182.  
  183. #endif
  184. #endif    //TARGET_IS_WIN95
  185.  
  186. #if defined(TARGET_IS_BEOS)
  187.  
  188. typedef bool Boolean;
  189. typedef unsigned char *Ptr;
  190. typedef Ptr *Handle;
  191. typedef unsigned char Str255[256];
  192. typedef unsigned char *StringPtr;
  193. #define nil NULL
  194. #include "GEQDraw.h"
  195.  
  196. #endif //TARGET_IS_BEOS
  197.  
  198.  
  199. // Define all internally used symbols for test compiles
  200.  
  201. #if defined(TEST_COMPILE)
  202.  
  203. typedef enum {false, true} Boolean;
  204. typedef struct {int top; int left; int right; int bottom;} Rect;
  205. typedef unsigned long RgnHandle;
  206. typedef struct { short h; short v; } Point;
  207.  
  208. typedef unsigned char * Ptr;
  209. typedef Ptr * Handle;
  210.  
  211. typedef char * StringPtr;
  212.  
  213. #define nil 0
  214.  
  215. #endif
  216.  
  217. #endif // define preload
  218.